package com.zb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zb.entity.ZjWorkFee;
import com.zb.result.PageUtil;
import com.zb.vo.OrderFeeListSelectVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 工单费用表 Mapper 接口
 * </p>
 *
 * @author WEN
 * @since 2023-10-25
 */
@Repository
public interface ZjWorkFeeMapper extends BaseMapper<ZjWorkFee> {

    /**
     * 根据工单ID获取工单详情的服务项目列表
     * @param workId 工单ID
     * @param pageUtil
     * @return
     */
    List<ZjWorkFee> getOrderDetailFeeProjectList(@Param("workId") Long workId, @Param("pageUtil") PageUtil pageUtil);

    /**
     * 根据工单ID获取工单详情的服务项目列表总记录数
     * @param workId 工单ID
     * @return
     */
    long getOrderDetailFeeProjectListCount(@Param("workId") Long workId);

    /**
     * 获取工单服务费用项目列表
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    List<ZjWorkFee> getList(@Param("custAccId") Long custAccId, @Param("selectVo") OrderFeeListSelectVo selectVo);

    /**
     * 获取工单服务费用项目列表总记录数
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    long getListCount(@Param("custAccId") Long custAccId, @Param("selectVo") OrderFeeListSelectVo selectVo);

    /**
     * 获取服务商详情之工单费用列表
     * @param networkId 服务商ID
     * @param pageUtil 分页对象
     * @return
     */
    List<ZjWorkFee> getNetworkDetailOrderFeeList(@Param("networkId") Long networkId, @Param("selectVo") PageUtil pageUtil);

    /**
     * 获取服务商详情之工单费用列表总记录数
     * @param networkId 服务商ID
     * @return
     */
    long getNetworkDetailOrderFeeListCount(@Param("networkId") Long networkId);

    /**
     * 获取商家详情之工单费用列表
     * @param factoryId 品牌商家ID
     * @param pageUtil 分页对象
     * @return
     */
    List<ZjWorkFee> getFactoryDetailOrderFeeList(@Param("factoryId") Long factoryId, @Param("pageUtil") PageUtil pageUtil);

    /**
     * 获取商家详情之工单费用列表总记录数
     * @param factoryId 品牌商家ID
     * @return
     */
    long getFactoryDetailOrderFeeListCount(@Param("factoryId") Long factoryId);

    /**
     * 根据工单ID与单号查询存在的费用
     * @param workId 工单ID
     * @param code 费用单号
     * @return
     */
    ZjWorkFee getByWorkIdAndCode(@Param("workId") Long workId, @Param("code") String code);
}
